///*
// * Copyright (C) 2017 Baidu, Inc. All Rights Reserved.
// */
//package com.freecat.projectnanjiang.face.activity;
//
//import android.Manifest;
//import android.support.v7.app.AlertDialog;
//import android.content.res.Configuration;
//import android.graphics.Bitmap;
//import android.graphics.Color;
//import android.graphics.Rect;
//import android.graphics.RectF;
//import android.os.Build;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.support.annotation.NonNull;
//import android.support.annotation.Nullable;
//import android.support.v4.app.ActivityCompat;
//import android.text.TextUtils;
//import android.util.DisplayMetrics;
//import android.util.Log;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.view.ViewTreeObserver;
//import android.view.WindowManager;
//import android.widget.ImageView;
//import android.widget.RelativeLayout;
//import android.widget.TextView;
//
//import com.baidu.aip.FaceSDKManager;
//import com.baidu.aip.ImageFrame;
//import com.baidu.aip.face.CameraImageSource;
//import com.baidu.aip.face.DetectRegionProcessor;
//import com.baidu.aip.face.FaceDetectManager;
//import com.baidu.aip.face.FaceFilter;
//import com.baidu.aip.face.PreviewView;
//import com.baidu.aip.face.camera.ICameraControl;
//import com.baidu.aip.face.camera.PermissionCallback;
//import com.baidu.idl.facesdk.FaceInfo;
//import com.baidu.location.BDAbstractLocationListener;
//import com.baidu.location.BDLocation;
//import com.baidu.location.LocationClient;
//import com.baidu.location.LocationClientOption;
//import com.blankj.utilcode.util.AppUtils;
//import com.blankj.utilcode.util.SPUtils;
//import com.blankj.utilcode.util.ToastUtils;
//import com.google.gson.Gson;
//import com.freecat.projectnanjiang.MainActivity;
//import com.freecat.projectnanjiang.R;
//import com.freecat.projectnanjiang.face.APIService;
//import com.freecat.projectnanjiang.face.Config;
//import com.freecat.projectnanjiang.face.FaceError;
//import com.freecat.projectnanjiang.face.OnResultListener;
//import com.freecat.projectnanjiang.face.bean.AccessToken;
//import com.freecat.projectnanjiang.face.bean.LiveVerifyBean;
//import com.freecat.projectnanjiang.face.bean.RegResult;
//import com.freecat.projectnanjiang.face.util.ImageSaveUtil;
//import com.freecat.projectnanjiang.face.util.ImageUtil;
//import com.freecat.projectnanjiang.face.widget.BrightnessTools;
//import com.freecat.projectnanjiang.face.widget.FaceRoundView;
//import com.freecat.projectnanjiang.face.widget.WaveHelper;
//import com.freecat.projectnanjiang.face.widget.WaveView;
//import com.freecat.projectnanjiang.mvp.model.entity.LoginBean;
//import com.freecat.projectnanjiang.mvp.model.entity.UpdateBean;
//import com.freecat.projectnanjiang.mvp.presenter.LoginPresenter;
//import com.freecat.projectnanjiang.mvp.ui.activity.AccountLoginActivity;
//import com.freecat.projectnanjiang.mvp.ui.activity.BaseActivity;
//import com.freecat.projectnanjiang.mvp.ui.activity.CheckInActivity;
//import com.freecat.projectnanjiang.utils.Constant;
//import com.freecat.projectnanjiang.utils.Tools;
//
//import org.json.JSONArray;
//import org.json.JSONException;
//import org.json.JSONObject;
//
//import java.io.File;
//import java.io.IOException;
//import java.lang.ref.WeakReference;
//import java.net.URLEncoder;
//import java.util.List;
//import java.util.UUID;
//
//import me.jessyan.art.mvp.IView;
//import me.jessyan.art.utils.ArtUtils;
//import timber.log.Timber;
//
///**
// * 实时检测调用identify进行人脸识别，MainActivity未给出改示例的入口，开发者可以在MainActivity调用
// * Intent intent = new Intent(MainActivity.this, DetectLoginActivity.class);
// * startActivity(intent);
// */
//public class DetectLoginActivity extends BaseActivity<LoginPresenter> implements IView {
//    private final static int MSG_INITVIEW = 1001;
//    private final static int MSG_DETECTTIME = 1002;
//    private final static int MSG_INITWAVE = 1003;
//    private TextView nameTextView;
//    private PreviewView previewView;
//    private View mInitView;
//    //  private TextureView textureView;
//    private FaceRoundView rectView;
//    private boolean mGoodDetect = false;
//    private static final double ANGLE = 15;
//    private ImageView closeIv;
//    private boolean mDetectStoped = false;
//    private ImageView mSuccessView;
//    private Handler mHandler;
//    //  private boolean mReDetect = true;
//    private String mCurTips;
//    //  private ProgressBar mProgress;
//    private boolean mUploading = false;
//    private long mLastTipsTime = 0;
//    private int mDetectCount = 0;
//    private int mCurFaceId = -1;
//
//    private FaceDetectManager faceDetectManager;
//    private DetectRegionProcessor cropProcessor = new DetectRegionProcessor();
//    private WaveHelper mWaveHelper;
//    private WaveView mWaveview;
//    private int mBorderColor = Color.parseColor("#28FFFFFF");
//    private int mBorderWidth = 0;
//    private int mScreenW;
//    private int mScreenH;
//    private TextView tvMessage;
//    private String type;
//    private LocationClient locationClient;
//    private String time;
//    private String address;
//    private double longitude;
//    private double latitude;
//
//    @Override
//    public int initView(@Nullable Bundle savedInstanceState) {
//        return R.layout.activity_login_detected;
//    }
//
//    @Override
//    public void initData(@Nullable Bundle savedInstanceState) {
//        type = getIntent().getStringExtra("type");
//        if (type == null) {
//            mPresenter.checkUpdate(me.jessyan.art.mvp.Message.obtain(this, new String[]{rybh}));
//        }
//        if (type == null) {
//            APIService.getInstance().initAccessTokenWithAkSk(new OnResultListener<AccessToken>() {
//                @Override
//                public void onResult(AccessToken result) {
//
//                }
//
//                @Override
//                public void onError(FaceError error) {
//
//                }
//            }, this, Config.apiKey, Config.secretKey);
//        }
//        faceDetectManager = new FaceDetectManager(mContext);
//        initScreen();
//        initView();
//        mHandler = new InnerHandler(DetectLoginActivity.this);
//        mHandler.sendEmptyMessageDelayed(MSG_INITVIEW, 500);
//        initLocationOption();
//    }
//
//    private void showDialog(String apkUrl, String description) {
//        View view = LayoutInflater.from(this).inflate(R.layout.dialog_update_layout, null);
//        TextView tvContent = view.findViewById(R.id.tv_update_content);
//        ImageView ivUpdate = view.findViewById(R.id.iv_update);
//        ImageView ivClose = view.findViewById(R.id.iv_close);
//        AlertDialog alertDialog = new AlertDialog.Builder(this, R.style.DialogStyle).setView(view).show();
//        tvContent.setText(description);
//        ivUpdate.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                alertDialog.dismiss();
//                if (apkUrl != null) {
//                    Tools.downloadAPK(URLEncoder.encode(apkUrl), mContext);
//                }
//            }
//        });
//        ivClose.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                alertDialog.dismiss();
//            }
//        });
//    }
//
//    private void initLocationOption() {
////定位服务的客户端。宿主程序在客户端声明此类，并调用，目前只支持在主线程中启动
//        locationClient = new LocationClient(getApplicationContext());
////声明LocationClient类实例并配置定位参数
//        LocationClientOption locationOption = new LocationClientOption();
//        MyLocationListener myLocationListener = new MyLocationListener();
////注册监听函数
//        locationClient.registerLocationListener(myLocationListener);
////可选，默认高精度，设置定位模式，高精度，低功耗，仅设备
//        locationOption.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
////可选，默认gcj02，设置返回的定位结果坐标系，如果配合百度地图使用，建议设置为bd09ll;
//        locationOption.setCoorType("bd09ll");
////可选，默认0，即仅定位一次，设置发起连续定位请求的间隔需要大于等于1000ms才是有效的
//        locationOption.setScanSpan(0);
////可选，设置是否需要地址信息，默认不需要
//        locationOption.setIsNeedAddress(true);
////可选，设置是否需要地址描述
//        locationOption.setIsNeedLocationDescribe(true);
////可选，默认false，设置是否需要位置语义化结果，可以在BDLocation.getLocationDescribe里得到，结果类似于“在北京天安门附近”
//        locationOption.setIsNeedLocationDescribe(true);
////可选，默认false，设置是否需要POI结果，可以在BDLocation.getPoiList里得到
//        locationOption.setIsNeedLocationPoiList(true);
////可选，默认false，设置是否开启Gps定位
//        locationOption.setOpenGps(true);
//        locationClient.setLocOption(locationOption);
//        locationClient.start();
//    }
//
//    public class MyLocationListener extends BDAbstractLocationListener {
//        @Override
//        public void onReceiveLocation(BDLocation location) {
//            time = location.getTime();
//            address = location.getAddress().address;
//            longitude = location.getLongitude();
//            latitude = location.getLatitude();
//            locationClient.stop();
//        }
//    }
//
//
//    @Override
//    public void onBackPressed() {
//
//        SPUtils.getInstance(Constant.SP_CONFIG).put(Constant.MUST_VERIFY, true);
//        super.onBackPressed();
//    }
//
//    @Nullable
//    @Override
//    public LoginPresenter obtainPresenter() {
//        return new LoginPresenter(ArtUtils.obtainAppComponentFromContext(this));
//    }
//
//    private void initScreen() {
//        WindowManager manager = getWindowManager();
//        DisplayMetrics outMetrics = new DisplayMetrics();
//        manager.getDefaultDisplay().getMetrics(outMetrics);
//        mScreenW = outMetrics.widthPixels;
//        mScreenH = outMetrics.heightPixels;
//    }
//
//    private void initView() {
//        mInitView = findViewById(R.id.camera_layout);
//        previewView = (PreviewView) findViewById(R.id.preview_view);
//        TextView tvToRegister = findViewById(R.id.tv_to_register);
//        TextView tvLoginAccount = findViewById(R.id.tv_login_account);
//        TextView tvTitle = findViewById(R.id.tv_title);
//        tvMessage = findViewById(R.id.tv_message);
//        if ("1".equals(type) || "2".equals(type)) {
//            tvTitle.setText("人脸验证");
//        } else {
//            tvTitle.setText("人脸登录");
//            tvToRegister.setVisibility(View.VISIBLE);
//            tvLoginAccount.setVisibility(View.VISIBLE);
//            tvToRegister.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    ArtUtils.startActivity(FaceDetectActivity.class);
//                }
//            });
//            tvLoginAccount.setOnClickListener(new View.OnClickListener() {
//                @Override
//                public void onClick(View v) {
//                    ArtUtils.startActivity(AccountLoginActivity.class);
//                }
//            });
//        }
//        rectView = (FaceRoundView) findViewById(R.id.rect_view);
//        final CameraImageSource cameraImageSource = new CameraImageSource(this);
//        cameraImageSource.setPreviewView(previewView);
//
//        faceDetectManager.setImageSource(cameraImageSource);
//        faceDetectManager.setOnFaceDetectListener(new FaceDetectManager.OnFaceDetectListener() {
//            @Override
//            public void onDetectFace(final int retCode, FaceInfo[] infos, ImageFrame frame) {
//
//                if (mUploading) {
//                    //   Log.d("DetectLoginActivity", "is uploading ,not detect time");
//                    return;
//                }
//                //  Log.d("DetectLoginActivity", "retCode is:" + retCode);
//                String str = "";
//                if (retCode == 0) {
//                    if (infos != null && infos[0] != null) {
//                        FaceInfo info = infos[0];
//                        boolean distance = false;
//                        if (info != null && frame != null) {
//                            if (info.mWidth >= (0.9 * frame.getWidth())) {
//                                distance = false;
//                                str = getResources().getString(R.string.detect_zoom_out);
//                            } else if (info.mWidth <= 0.4 * frame.getWidth()) {
//                                distance = false;
//                                str = getResources().getString(R.string.detect_zoom_in);
//                            } else {
//                                distance = true;
//                            }
//                        }
//                        boolean headUpDown;
//                        if (info != null) {
//                            if (info.headPose[0] >= ANGLE) {
//                                headUpDown = false;
//                                str = getResources().getString(R.string.detect_head_up);
//                            } else if (info.headPose[0] <= -ANGLE) {
//                                headUpDown = false;
//                                str = getResources().getString(R.string.detect_head_down);
//                            } else {
//                                headUpDown = true;
//                            }
//
//                            boolean headLeftRight;
//                            if (info.headPose[1] >= ANGLE) {
//                                headLeftRight = false;
//                                str = getResources().getString(R.string.detect_head_left);
//                            } else if (info.headPose[1] <= -ANGLE) {
//                                headLeftRight = false;
//                                str = getResources().getString(R.string.detect_head_right);
//                            } else {
//                                headLeftRight = true;
//                            }
//
//                            if (distance && headUpDown && headLeftRight) {
//                                mGoodDetect = true;
//                            } else {
//                                mGoodDetect = false;
//                            }
//
//                        }
//                    }
//                } else if (retCode == 1) {
//                    str = getResources().getString(R.string.detect_head_up);
//                } else if (retCode == 2) {
//                    str = getResources().getString(R.string.detect_head_down);
//                } else if (retCode == 3) {
//                    str = getResources().getString(R.string.detect_head_left);
//                } else if (retCode == 4) {
//                    str = getResources().getString(R.string.detect_head_right);
//                } else if (retCode == 5) {
//                    str = getResources().getString(R.string.detect_low_light);
//                } else if (retCode == 6) {
//                    str = getResources().getString(R.string.detect_face_in);
//                } else if (retCode == 7) {
//                    str = getResources().getString(R.string.detect_face_in);
//                } else if (retCode == 10) {
//                    str = getResources().getString(R.string.detect_keep);
//                } else if (retCode == 11) {
//                    str = getResources().getString(R.string.detect_occ_right_eye);
//                } else if (retCode == 12) {
//                    str = getResources().getString(R.string.detect_occ_left_eye);
//                } else if (retCode == 13) {
//                    str = getResources().getString(R.string.detect_occ_nose);
//                } else if (retCode == 14) {
//                    str = getResources().getString(R.string.detect_occ_mouth);
//                } else if (retCode == 15) {
//                    str = getResources().getString(R.string.detect_right_contour);
//                } else if (retCode == 16) {
//                    str = getResources().getString(R.string.detect_left_contour);
//                } else if (retCode == 17) {
//                    str = getResources().getString(R.string.detect_chin_contour);
//                }
//
//                boolean faceChanged = true;
//                if (infos != null && infos[0] != null) {
//                    Log.d("DetectLogin", "face id is:" + infos[0].face_id);
//                    if (infos[0].face_id == mCurFaceId) {
//                        faceChanged = false;
//                    } else {
//                        faceChanged = true;
//                    }
//                    mCurFaceId = infos[0].face_id;
//                }
//
//                if (faceChanged) {
//                    showProgressBar(false);
//                    onRefreshSuccessView(false);
//                }
//
//                final int resultCode = retCode;
//                if (!(mGoodDetect && retCode == 0)) {
//                    if (faceChanged) {
//                        showProgressBar(false);
//                        onRefreshSuccessView(false);
//                    }
//                }
//
//                if (retCode == 6 || retCode == 7 || retCode < 0) {
//                    rectView.processDrawState(true);
//                } else {
//                    rectView.processDrawState(false);
//                }
//
//                mCurTips = str;
//                runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        if ((System.currentTimeMillis() - mLastTipsTime) > 1000) {
//                            nameTextView.setText(mCurTips);
//                            tvMessage.setText("");
//                            mLastTipsTime = System.currentTimeMillis();
//                        }
//                        if (mGoodDetect && resultCode == 0) {
//                            nameTextView.setText("");
//                            onRefreshSuccessView(true);
//                            showProgressBar(true);
//                        }
//                    }
//                });
//
//                if (infos == null) {
//                    mGoodDetect = false;
//                }
//
//
//            }
//        });
//        faceDetectManager.setOnTrackListener(new FaceFilter.OnTrackListener() {
//            @Override
//            public void onTrack(FaceFilter.TrackedModel trackedModel) {
//                if (trackedModel.meetCriteria() && mGoodDetect) {
//                    upload(trackedModel);
//                    mGoodDetect = false;
//                }
//            }
//        });
//
//        cameraImageSource.getCameraControl().setPermissionCallback(new PermissionCallback() {
//            @Override
//            public boolean onRequestPermission() {
//                ActivityCompat.requestPermissions(DetectLoginActivity.this,
//                        new String[]{Manifest.permission.CAMERA}, 100);
//                return true;
//            }
//        });
//
//        rectView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//            @Override
//            public void onGlobalLayout() {
//                start();
//                rectView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
//            }
//        });
//        ICameraControl control = cameraImageSource.getCameraControl();
//        control.setPreviewView(previewView);
//        // 设置检测裁剪处理器
//        faceDetectManager.addPreProcessor(cropProcessor);
//
//        int orientation = getResources().getConfiguration().orientation;
//        boolean isPortrait = (orientation == Configuration.ORIENTATION_PORTRAIT);
//
//        if (isPortrait) {
//            previewView.setScaleType(PreviewView.ScaleType.FIT_WIDTH);
//        } else {
//            previewView.setScaleType(PreviewView.ScaleType.FIT_HEIGHT);
//        }
//        int rotation = getWindowManager().getDefaultDisplay().getRotation();
//        cameraImageSource.getCameraControl().setDisplayOrientation(rotation);
//        //   previewView.getTextureView().setScaleX(-1);
//        nameTextView = (TextView) findViewById(R.id.name_text_view);
//        closeIv = (ImageView) findViewById(R.id.closeIv);
//        closeIv.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                finish();
//            }
//        });
//        mSuccessView = (ImageView) findViewById(R.id.success_image);
//
//        mSuccessView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
//            @Override
//            public void onGlobalLayout() {
//                if (mSuccessView.getTag() == null) {
//                    Rect rect = rectView.getFaceRoundRect();
//                    RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) mSuccessView.getLayoutParams();
//                    int w = (int) getResources().getDimension(R.dimen.success_width);
//                    rlp.setMargins(
//                            rect.centerX() - (w / 2),
//                            rect.top - (w / 2),
//                            0,
//                            0);
//                    mSuccessView.setLayoutParams(rlp);
//                    mSuccessView.setTag("setlayout");
//                }
//                mSuccessView.setVisibility(View.GONE);
//
//                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
//                    mSuccessView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
//                } else {
//                    mSuccessView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
//                }
//                // mSuccessView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
//            }
//        });
//
//        // mProgress = (ProgressBar) findViewById(R.id.progress_bar);
//        init();
//    }
//
//    private void initWaveview(Rect rect) {
//        RelativeLayout rootView = (RelativeLayout) findViewById(R.id.root_view);
//
//        RelativeLayout.LayoutParams waveParams = new RelativeLayout.LayoutParams(
//                rect.width(), rect.height());
//
//        waveParams.setMargins(rect.left, rect.top, rect.left, rect.top);
//        waveParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
//        waveParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
//
//        mWaveview = new WaveView(this);
//        rootView.addView(mWaveview, waveParams);
//
//        // mWaveview = (WaveView) findViewById(R.id.wave);
//        mWaveHelper = new WaveHelper(mWaveview);
//
//        mWaveview.setShapeType(WaveView.ShapeType.CIRCLE);
//        mWaveview.setWaveColor(
//                Color.parseColor("#28FFFFFF"),
//                Color.parseColor("#3cFFFFFF"));
//
////        mWaveview.setWaveColor(
////                Color.parseColor("#28f16d7a"),
////                Color.parseColor("#3cf16d7a"));
//
//        mBorderColor = Color.parseColor("#28f16d7a");
//        mWaveview.setBorder(mBorderWidth, mBorderColor);
//    }
//
//    private void visibleView() {
//        mInitView.setVisibility(View.INVISIBLE);
//    }
//
//    private void initBrightness() {
//        int brightness = BrightnessTools.getScreenBrightness(DetectLoginActivity.this);
//        if (brightness < 200) {
//            BrightnessTools.setBrightness(this, 200);
//        }
//    }
//
//
//    private void init() {
//        FaceSDKManager.getInstance().getFaceTracker(this).set_min_face_size(200);
//        FaceSDKManager.getInstance().getFaceTracker(this).set_isCheckQuality(true);
//        // 该角度为商学，左右，偏头的角度的阀值，大于将无法检测出人脸，为了在1：n的时候分数高，注册尽量使用比较正的人脸，可自行条件角度
//        FaceSDKManager.getInstance().getFaceTracker(this).set_eulur_angle_thr(15, 15, 15);
//        FaceSDKManager.getInstance().getFaceTracker(this).set_isVerifyLive(true);
//
//        initBrightness();
//    }
//
//    private void start() {
//
//        Rect dRect = rectView.getFaceRoundRect();
//
//        //   RectF newDetectedRect = new RectF(detectedRect);
//        int preGap = getResources().getDimensionPixelOffset(R.dimen.preview_margin);
//        int w = getResources().getDimensionPixelOffset(R.dimen.detect_out);
//
//        int orientation = getResources().getConfiguration().orientation;
//        boolean isPortrait = (orientation == Configuration.ORIENTATION_PORTRAIT);
//        if (isPortrait) {
//            // 检测区域矩形宽度
//            int rWidth = mScreenW - 2 * preGap;
//            // 圆框宽度
//            int dRectW = dRect.width();
//            // 检测矩形和圆框偏移
//            int h = (rWidth - dRectW) / 2;
//            //  Log.d("liujinhui hi is:", " h is:" + h + "d is:" + (dRect.left - 150));
//            int rLeft = w;
//            int rRight = rWidth - w;
//            int rTop = dRect.top - h - preGap + w;
//            int rBottom = rTop + rWidth - w;
//
//            //  Log.d("liujinhui", " rLeft is:" + rLeft + "rRight is:" + rRight + "rTop is:" + rTop + "rBottom is:" + rBottom);
//            RectF newDetectedRect = new RectF(rLeft, rTop, rRight, rBottom);
//            cropProcessor.setDetectedRect(newDetectedRect);
//        } else {
//            int rLeft = mScreenW / 2 - mScreenH / 2 + w;
//            int rRight = mScreenW / 2 + mScreenH / 2 + w;
//            int rTop = 0;
//            int rBottom = mScreenH;
//
//            RectF newDetectedRect = new RectF(rLeft, rTop, rRight, rBottom);
//            cropProcessor.setDetectedRect(newDetectedRect);
//        }
//
//
//        faceDetectManager.start();
//        initWaveview(dRect);
//    }
//
//
//    /**
//     * 参考https://ai.baidu.com/docs#/Face-API/top 人脸识别接口
//     * 无需知道uid，如果同一个人多次注册，可能返回任意一个帐号的uid
//     * 建议上传人脸到自己的服务器，在服务器端调用https://aip.baidubce.com/rest/2.0/face/v3/search，比对分数阀值（如：80分），
//     * 认为登录通过
//     * group_id	是	string	用户组id（由数字、字母、下划线组成），长度限制128B，如果需要查询多个用户组id，用逗号分隔
//     * image	是	string	图像base64编码，每次仅支持单张图片，图片编码后大小不超过10M
//     * <p>
//     * 返回登录认证的参数给客户端
//     *
//     * @param model
//     */
//    private void upload(FaceFilter.TrackedModel model) {
//        if (mUploading) {
//            Log.d("liujinhui", "is uploading");
//            return;
//        }
//        mUploading = true;
//
//        if (model.getEvent() != FaceFilter.Event.OnLeave) {
//            mDetectCount++;
//
//            try {
//                final Bitmap face = model.cropFace();
//                final File file = File.createTempFile(UUID.randomUUID().toString() + "", ".jpg");
//                ImageUtil.resize(face, file, 200, 200);
//                ImageSaveUtil.saveCameraBitmap(DetectLoginActivity.this, face, "head_tmp.jpg");
//                APIService.getInstance().verify(new OnResultListener<RegResult>() {
//                    @Override
//                    public void onResult(RegResult result) {
//                        String jsonRes = result.getJsonRes();
//                        LiveVerifyBean bean = new Gson().fromJson(jsonRes, LiveVerifyBean.class);
//                        if (bean.getResult().getFace_liveness() >= 0.995) {
//                            APIService.getInstance().identify(new OnResultListener<RegResult>() {
//                                @Override
//                                public void onResult(RegResult result) {
//                                    deleteFace(file);
//                                    if (result == null) {
//                                        mUploading = false;
//                                        if (mDetectCount >= 3) {
//                                            tvMessage.setText("人脸校验不通过,请确认是否已注册");
//                                        }
//                                        return;
//                                    }
//
//                                    String res = result.getJsonRes();
//                                    double maxScore = 0;
//                                    String userId = "";
//                                    String userInfo = "";
//                                    if (TextUtils.isEmpty(res)) {
//                                        return;
//                                    }
//                                    JSONObject obj = null;
//                                    try {
//                                        obj = new JSONObject(res);
//                                        JSONObject resObj = obj.optJSONObject("result");
//                                        if (resObj != null) {
//                                            JSONArray resArray = resObj.optJSONArray("user_list");
//                                            int size = resArray.length();
//
//
//                                            for (int i = 0; i < size; i++) {
//                                                JSONObject s = (JSONObject) resArray.get(i);
//                                                if (s != null) {
//                                                    double score = s.getDouble("score");
//                                                    if (score > maxScore) {
//                                                        maxScore = score;
//                                                        userId = s.getString("user_id");
//                                                        userInfo = s.getString("user_info");
//                                                    }
//
//                                                }
//                                            }
//
//                                        }
//
//                                    } catch (JSONException e) {
//                                        e.printStackTrace();
//                                    }
//
//                                    if (maxScore > 80) {
//                                        if ("1".equals(type) || "2".equals(type)) {
//                                            String rybh = SPUtils.getInstance(Constant.SP_CONFIG).getString(Constant.USER_ID);
//                                            if (userId.equals(rybh)) {
//                                                if ("1".equals(type)) {
//                                                    ArtUtils.startActivity(CheckInActivity.class);
//                                                    finish();
//                                                } else {
//                                                    SPUtils.getInstance(Constant.SP_CONFIG).put(Constant.MUST_VERIFY, false);
//                                                    mPresenter.CheckIn(me.jessyan.art.mvp.Message.obtain(DetectLoginActivity.this, new String[]{rybh, xmbh, time, String.valueOf(longitude), String.valueOf(latitude), address}));
//                                                }
//                                            } else {
//                                                tvMessage.setText("您与当前账号不匹配");
//                                                mUploading = false;
//                                            }
//                                        } else {
//                                            tvMessage.setText(String.format("欢迎%s", userInfo));
//                                            mPresenter.getUserDetail(me.jessyan.art.mvp.Message.obtain(DetectLoginActivity.this, new String[]{userId}));
//                                        }
//                                    } else {
//                                        if (mDetectCount >= 3) {
//                                            tvMessage.setText("人脸校验不通过,请确认是否已注册");
//                                        }
//                                        mUploading = false;
//                                    }
//                                }
//
//                                @Override
//                                public void onError(FaceError error) {
//                                    error.printStackTrace();
//                                    deleteFace(file);
//                                    mUploading = false;
//                                    if (mDetectCount >= 3) {
//                                        if (error.getErrorCode() == 10000) {
//                                            tvMessage.setText("人脸校验不通过,请检查网络后重试");
//                                        } else {
//                                            tvMessage.setText("人脸校验不通过,请确认是否已注册");
//                                        }
//                                    }
//                                }
//                            }, file);
//                        } else {
//                            ToastUtils.showShort("当前不是活体");
//                            mUploading = false;
//                        }
//                    }
//
//                    @Override
//                    public void onError(FaceError error) {
//                        String errorMessage = error.getErrorMessage();
//                        ToastUtils.showShort("活体验证失败");
//                        mUploading = false;
//                    }
//                }, file);
//
//            } catch (IOException e) {
//                e.printStackTrace();
//            } catch (ArrayIndexOutOfBoundsException e) {
//                e.printStackTrace();
//            }
//        } else {
//            onRefreshSuccessView(false);
//            showProgressBar(false);
//            mUploading = false;
//        }
//    }
//
//    private void showProgressBar(final boolean show) {
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                if (show) {
//                    if (mWaveview != null) {
//                        mWaveview.setVisibility(View.VISIBLE);
//                        mWaveHelper.start();
//                    }
//                } else {
//                    if (mWaveview != null) {
//                        mWaveview.setVisibility(View.GONE);
//                        mWaveHelper.cancel();
//                    }
//                }
//
//            }
//        });
//    }
//
//    private void deleteFace(File file) {
//        if (file != null && file.exists()) {
//            file.delete();
//        }
//    }
//
//    @Override
//    protected void onPause() {
//        super.onPause();
//        faceDetectManager.stop();
//        mDetectStoped = true;
//        onRefreshSuccessView(false);
//        if (mWaveview != null) {
//            mWaveHelper.cancel();
//            mWaveview.setVisibility(View.GONE);
//        }
//    }
//
//    @Override
//    protected void onResume() {
//        super.onResume();
//        if (mDetectStoped) {
//            faceDetectManager.start();
//            mDetectStoped = false;
//        }
//        if ("2".equals(type)) {
//            SPUtils.getInstance(Constant.SP_CONFIG).put(Constant.MUST_VERIFY, true);
//        }
//    }
//
//    @Override
//    protected void onStop() {
//        super.onStop();
//        faceDetectManager.stop();
//        mDetectStoped = true;
//        onRefreshSuccessView(false);
//        if (mWaveview != null) {
//            mWaveview.setVisibility(View.GONE);
//            mWaveHelper.cancel();
//        }
//    }
//
//    private void onRefreshSuccessView(final boolean isShow) {
//
//        runOnUiThread(new Runnable() {
//            @Override
//            public void run() {
//                mSuccessView.setVisibility(isShow ? View.VISIBLE : View.INVISIBLE);
//            }
//        });
//    }
//
//    @Override
//    public void showLoading() {
//        progressDialog.show();
//    }
//
//    @Override
//    public void hideLoading() {
//        progressDialog.dismiss();
//    }
//
//    @Override
//    public void showMessage(@NonNull String message) {
//        ToastUtils.showShort(message);
//    }
//
//    @Override
//    public void handleMessage(@NonNull me.jessyan.art.mvp.Message message) {
//        switch (message.what) {
//            case LoginPresenter.GET_USER_DETAIL:
//                LoginBean loginBean = (LoginBean) message.obj;
//                if (loginBean != null) {
//                    SPUtils spUtils = SPUtils.getInstance(Constant.SP_CONFIG);
//                    spUtils.put(Constant.TOKEN, loginBean.getToken());
////                    spUtils.put(Constant.TOKEN, "53bdc6a1-07c4-4aed-a231-d058499a8031");
//                    spUtils.put(Constant.USER_ID, loginBean.getRybh());
//                    spUtils.put(Constant.ACCOUNT, loginBean.getUsername());
//                    spUtils.put(Constant.PASSWORD, loginBean.getPassword());
//                    spUtils.put(Constant.USER_NAME, loginBean.getRyxm());
//                    spUtils.put(Constant.UNIT_NAME, loginBean.getDwmc());
//                    spUtils.put(Constant.ZH_LX, loginBean.getZhlx());
//                    spUtils.put(Constant.USER_AVATAR, loginBean.getRytx());
//                    List<LoginBean.CslistBean> cslist = loginBean.getCslist();
//                    for (LoginBean.CslistBean cslistBean : cslist) {
//                        switch (cslistBean.getCSMC()) {
//                            case "WDSWSC":
//                                spUtils.put(Constant.SWSJ, cslistBean.getCSZ());
//                                break;
//                            case "ZKJLCS":
//                                spUtils.put(Constant.ZKJL, cslistBean.getCSZ());
//                                break;
//                            case "RLSBSJCS":
//                                spUtils.put(Constant.RLSBSJCS, cslistBean.getCSZ());
//                                break;
//                            case "ZKWZJLCS":
//                                spUtils.put(Constant.ZKWZJLCS, cslistBean.getCSZ());
//                                break;
//                        }
//                    }
//                    ArtUtils.startActivity(MainActivity.class);
//                    finish();
//                } else {
//                    ToastUtils.showShort("没有相关账户信息");
//                    mUploading = false;
//                }
//                break;
//            case LoginPresenter.CHECK_IN:
//                setResult(RESULT_OK);
//                finish();
//                break;
//            case LoginPresenter.CHECK_UPDATE:
//                UpdateBean updateBean = (UpdateBean) message.obj;
//                if (updateBean != null) {
//                    int appVersionCode = AppUtils.getAppVersionCode();
//                    int version = Integer.parseInt(updateBean.getVERSIONCODE());
//                    if (version > appVersionCode) {
//                        showDialog(updateBean.getAPKURL(), updateBean.getDESCRIPTION());
//                    } else {
//                        Timber.d("无新版本");
//                    }
//                } else {
//                    ToastUtils.showShort("无新版本");
//                }
//                break;
//        }
//    }
//
//
//    private static class InnerHandler extends Handler {
//        private WeakReference<DetectLoginActivity> mWeakReference;
//
//        public InnerHandler(DetectLoginActivity activity) {
//            super();
//            this.mWeakReference = new WeakReference<DetectLoginActivity>(activity);
//        }
//
//        @Override
//        public void handleMessage(Message msg) {
//            if (mWeakReference == null || mWeakReference.get() == null) {
//                return;
//            }
//            DetectLoginActivity activity = mWeakReference.get();
//            if (activity == null) {
//                return;
//            }
//            if (msg == null) {
//                return;
//
//            }
//            switch (msg.what) {
//                case MSG_INITVIEW:
//                    activity.visibleView();
//                    break;
//                case MSG_DETECTTIME:
//                    break;
//                default:
//                    break;
//            }
//        }
//    }
//}
